package com.ny.mapper;

import com.ny.entity.Devices;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface DeviceMapper extends MongoRepository<Devices, String> {
    
    /**
     * 查询所有设备信息
     * @return 设备列表
     */
    @Query("{}")
    List<Devices> selectAllDevice();

    /**
     * 根据设备名称查询设备信息
     * @return 设备列表
     */
    List<Devices> findByName(String name);

    /**
     * 根据设备id删除设备信息
     * @param deviceId 设备ID
     * @return 删除的记录数
     */
    @Query(value = "{'device_id': ?0}", delete = true)
    long deleteDeviceById(int deviceId);
    
    /**
     * 根据设备名称模糊查询设备信息
     * @param name 设备名称（模糊匹配）
     * @return 设备列表
     */
    @Query("{'name': {$regex: ?0, $options: 'i'}}")
    List<Devices> findByNameLike(String name);
    
    /**
     * 根据设备ID查找设备信息
     * @param device_id 设备ID
     * @return 设备列表
     */
    @Query("{'device_id': ?0}")
    List<Devices> findByDeviceId(int device_id);
    
    /**
     * 根据设备ID查找设备信息
     * @param deviceId 设备ID
     * @return Optional容器包含的设备信息
     */
    @Query("{ 'device_id' : ?0 }")
    Optional<Devices> findByDeviceId(Integer deviceId);
}